package com.jl.magic.color;

/**
 * @author jiangli
 * @create 2020/7/8 4:56 下午
 * <p>
 * LAB颜色空间
 * LAB颜色空间是基于人眼对颜色的感知，可以表示人眼所能感受到的所有颜色。L表示明度，A表示红绿色差，B表示蓝黄色差
 * 该算法为改进的 RGB 欧几里得距离公式
 */
public class RgbWeightedSimilarity implements Similarity {

    @Override
    public double distance(int[] c1, int[] c2) {
        int rAvg = (c1[0] + c2[0]) / 2;
        int r = c1[0] - c2[0];
        int g = c1[1] - c2[1];
        int b = c1[2] - c2[2];
        return Math.sqrt((2 + (float) (rAvg / 256)) * Math.pow(r, 2) +
                4 * Math.pow(g, 2) + (2 + (float) ((255 - rAvg) / 256)) * Math.pow(b, 2));
    }

}
